import java.util.*;

/**
 * Diese Klasse dient dazu, dass der Server die jeweiligen bereits bestehenden Nutzer
 * abspeichern und jederzeit wieder aufrufen zu können.
 * Der Autor ist Tobias Abram seit dem 08.01.2015.
 */
public class Nutzer {
    private String benutzername;
    private String passwort;
    private String ip;
    private int port;
    private int status; //0 ist offline, 1 ist online, 2 ist im spiel, 3 ist gesperrt
    private ArrayList<Nutzer> freunde; //tatsaechlicheFreunde
    private ArrayList<Nutzer> faErhalten;
    private boolean istAdminDerLobby;
    private int anzahlSpiele;
    private int anzahlSiege;

    public Nutzer(String benutzername, String passwort, String pIp, int pPort) {
        this.benutzername = benutzername;
        this.passwort = passwort;
        this.status = 1;
        ip = pIp;
        port = pPort;
        freunde = new ArrayList<Nutzer>();
        faErhalten = new ArrayList<Nutzer>();
        istAdminDerLobby = false;
    }
    
    public void setAdminDerLobby() {
        istAdminDerLobby = true;
    }
    
    public void resetAdminDerLobby() {
        istAdminDerLobby = false;
    }
    
    public boolean getIstAdmin() {
        return istAdminDerLobby;
    }
   
    //ANDERE METHODEN
    
    public void anzahlSpieleErhoehen() {
        anzahlSpiele++;
    }
    
    public void anzahlSiegeErhoehen() {
        anzahlSiege++;
    }

    public void setPort(int pPort) {
        port = pPort;
    }

    public int getPort() {
        return port;
    }

    public void setIP(String pIP) {
        ip = pIP;
    }

    public String getIP() {
        return ip;
    }

    public void setStatus(int pStatus) {
        status = pStatus;
    }

    public int getStatus() {
        return status;
    }

    public String getBenutzername() {
        return benutzername;
    }

    public String getPasswort() {
        return passwort;
    }

    public void faErhalten(Nutzer neuerFreund) {
        faErhalten.add(neuerFreund);
    }

    /**
     * fuer den der die FA bekommen hat.
     */
    public void faAngenommen(Nutzer neuerFreund) {
        freunde.add(neuerFreund);
        faErhalten.remove(neuerFreund);
    }

    /**
     * fuer den der die FA geschickt hat.
     */
    public void faBestaetigt(Nutzer neuerFreund) {
        freunde.add(neuerFreund);
    }

    public void deleteFreund(Nutzer alterFreund) {
        freunde.remove(alterFreund);
    }

    public boolean istInAnfragenEnthalten(String benutzername) {
        for (int i=0; i<faErhalten.size(); i++) {
            if (benutzername.equals(faErhalten.get(i).getBenutzername())) {
                return true;
            }
        }
        return false;
    }

    public ArrayList<Nutzer> getFreunde() {
        return freunde;
    }

    public boolean istInFreundenEnthalten(String benutzername) {
        for (int i=0; i<freunde.size(); i++) {
            if (benutzername.equals(freunde.get(i).getBenutzername())) {
                return true;
            }
        }
        return false;
    }
    
    public ArrayList<Nutzer> getOnlineFreunde() {
        ArrayList<Nutzer> tempOnlineFreunde = new ArrayList<Nutzer>();
        for (int i=0; i<freunde.size(); i++) {
            if (freunde.get(i).getStatus() == 1) {
                tempOnlineFreunde.add(freunde.get(i));
            }
        }
        return tempOnlineFreunde;
    }
}